]> dgit.raspbian.org Git - gnome-shell.git/commit
shell/app: Don't move all workspace windows to their startup workspace
authorSebastian Keller <skeller@gnome.org>
Sat, 30 Oct 2021 11:21:17 +0000 (13:21 +0200)
committerSebastian Keller <skeller@gnome.org>
Sat, 30 Oct 2021 11:21:17 +0000 (13:21 +0200)
commitbc32a5210823c40016084c1d128c3113015e08cf
tree21e1930ad2693c66533c58ac0de801a199aceb50
parentff4ff66498ec374fce5b22b8bc01b523d1304e0b
shell/app: Don't move all workspace windows to their startup workspace

Windows from some applications, such as guake, are created as showing on
all workspaces. When these windows are put on the workspaces via
set_workspace_state() during construction, the first time the window is
added to a workspace in the loop triggers the shell app tracker which
then tries to move the window to its startup workspace. This makes the
window unsticky which triggers another set_workspace_state() which
tries to remove the window from all workspaces, but currently it is only
on the first one and then adds it to the startup workspace. Once that is
finished, the first set_workspace_state() continues adding the window
to the remaining workspaces, despite the window now no longer having
on_all_workspaces set to true.

When the window is now unmanaged, the window according to its internal
state is only found on the startup workspace, so it will only be removed
from that. This causes the assertion to fail that checks that the window
is no longer present on any workspace after this.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4720

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2014>
src/shell-app.c